package com.hspedu.qqclient.service;

import com.hspedu.qqcommon.Message;
import com.hspedu.qqcommon.MessageType;
import com.hspedu.qqcommon.User;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

/**
 * @author DL5O
 * @version 1.0
 * 该类完成用户的登陆验证和用户注册功能
 */
public class UserClientService {
    boolean b = false;
    private User u = new User();//因为我们可能在其他地方会使用user信息
    private Socket  socket;

    public boolean checkUser(String userId,String pwd){
        //创建User对象
        u.setUserId(userId);
        u.setPassword(pwd);
        //把User对象序列化

        //连接到服务端
        try {
            socket = new Socket(InetAddress.getByName("127.0.0.1"), 9999);
            ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
            oos.writeObject(u);//发送user对象

            //读取从服务端回复的Message对象
            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
            Message ms = (Message) ois.readObject();

            if(ms.getMesType().equals(MessageType.MESSAGE_LOGIN_SUCCEED)){//登陆成功

                //创建一个和服务器端保持通讯的线程 -> 再去创建一个线程类 ClientConnectServer
                ClientConnectServerThread ccst = new
                        ClientConnectServerThread(socket);
                //启动客服端线程
                ccst.start();
                //这里为了客服端的扩张，我们将线程放入到集合中
                ManageClientConnectServerThread.addClientConnectServerThread(userId,ccst);
                b = true;
            }else{
                //如果登陆失败，我们就不能启动和服务器 通讯的线程，关闭socket
                socket.close();
            }
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        return b;
    }
}
